package com.yzh.springboot_rbac.mapper;

import com.yzh.springboot_rbac.entity.DictData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 字典数据表的接口
 */
@Mapper
public interface DictDataMapper {
    /*定义接口，查询不同类型下的字典的key和value，给前端展示*/

    /**
     *1.查询系列各种方法汇总
     */
    /*1.根据字典类型查询该类型中的数据*/
    List<DictData> selectDictDataBytype(String dictType);

    /*2.通过条件查询字典数据*/
    List<DictData> selectDictDataByCondition(DictData dictData);

    /*3.查询所有字典数据
    * - 这个算是多写的，页面中没有查询所有字典数据这个效果*/
    List<DictData> selectAllDictData();

    /*4.通过id查询字典数据，主要用来添加的时候判断是否存在*/
    DictData selectDictDataById(@Param("dictCode") Long dictCode);


    /**
     * 配合DictType同步修改删除的辅助方法
     */
    /*1.同步修改字典数据
    * 注意：这个同步修改字典数据只修改字典数据中的dict_Type这个字段*/
    int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);

    /*2.辅助方法：用于统计一个字典类型对应的字典数据表中的行数。
    *   不用写在service，写在mapper中让字典实体类的service调用即可*/
    int countDictDataByType(String dictType);


    /**
     * 添加系列各种方法
     */
    /*1.添加某一类型的字典数据*/
    int insertDictData(DictData dictData);

    /**
     * 删除系列各种方法
     */

    /*1.删除单个字典数据*/
    int deleteDictDataById(@Param("dictCode") Long dictCode);

    /*2.批量删除字典数据*/
    int deleteDictDataByIds(@Param("dictCodes") long[] dictCodes);


    /**
     * 更新系列各种方法
     */
    /*1.更新字典数据*/
    int updateDictData(DictData dictData);
}
